package pers.cz.business;

import pers.cz.mapper.AutoPublicTemplateMapper;
import pers.cz.model.AutoPublicTemplate;
import pers.cz.mybatisPlugin.PageRowBounds;
import pers.cz.pub.AbstractBusiness;

import java.util.ArrayList;
import java.util.List;

/**
 * 公共模板管理
 * @program: PostGirl-panent
 * @description: PublicTemplateBusiness
 * @author: Cheng Zhi
 * @create: 2021-11-08 20:48
 **/
public class PublicTemplateBusiness extends AbstractBusiness {

    /**
     * 查询所有公共入参模板
     * @param pageStart
     * @param pageLimit
     * @return
     */
    public List<AutoPublicTemplate> queryAllPublicTemplateByPage(Integer pageStart, Integer pageLimit) {

        PageRowBounds pageRowBounds = new PageRowBounds(pageStart, pageLimit);
        return this.getMapper(AutoPublicTemplateMapper.class).selectALLPublicTemplateByPage(pageRowBounds);
    }

    /**
     * 获取模板总数
     * @return
     */
    public Integer queryCountPublicTemplate() {

        return this.getMapper(AutoPublicTemplateMapper.class).selectCountPublicTemplate();
    }

    /**
     * 添加模板
     * @param autoPublicTemplate
     * @return
     */
    public Integer addTemplate(AutoPublicTemplate autoPublicTemplate) {

        Long soNbr = this.getcPublicFunc().getSoNbr();
        autoPublicTemplate.setId(Integer.valueOf(soNbr + ""));
        return this.getMapper(AutoPublicTemplateMapper.class).insert(autoPublicTemplate);
    }

    /**
     * 修改模板
     * @param autoPublicTemplate
     * @return
     */
    public Integer updateTemplate(AutoPublicTemplate autoPublicTemplate) {
        return this.getMapper(AutoPublicTemplateMapper.class).updateByPrimaryKey(autoPublicTemplate);
    }

    /**
     * 删除模板
     * @param id
     * @return
     */
    public Integer deleteTemplate(Integer id) {
        return this.getMapper(AutoPublicTemplateMapper.class).deleteByPrimaryKey(id);
    }

    /**
     * 获取所有的模板名称
     * @return
     */
    public List<AutoPublicTemplate> queryPublicTemplateName() {

        return this.getMapper(AutoPublicTemplateMapper.class).selectDistinctName();
    }

    /**
     * 模糊查询
     * @param templateName
     * @param id
     * @return
     */
    public List<AutoPublicTemplate> selectPublicTemplateByNameOrId(String templateName, Integer id) {

        return this.getMapper(AutoPublicTemplateMapper.class).selectPublicTemplateByFuzzy(templateName, id);
    }

    /**
     * 解析出模板中的参数
     * @param id
     * @return
     */
    public List<String> selectParamsById(Integer id) {

        AutoPublicTemplate autoPublicTemplate = this.getMapper(AutoPublicTemplateMapper.class).selectByPrimaryKey(id);

        String params = autoPublicTemplate.getTemplate();

        String[] newTemplate = params.split("\\$");

        List<String> strings = new ArrayList<>();
        if (newTemplate.length > 1) {
            for (int i=1; i<newTemplate.length; i++) {
                int start = newTemplate[i].indexOf("{") + 1;
                int end = newTemplate[i].indexOf("}");
                String substring = newTemplate[i].substring(start, end);
                strings.add(substring);
            }
        }

        return strings;
    }
}
